package cn.com.open.itembank.service;

import cn.com.open.itembank.dto.QuestionTypeDto;
import cn.com.open.itembank.dto.QuestionTypeManageDto;
import cn.com.open.itembank.dto.ReturnModel;
import cn.com.open.itembank.entity.QuestionType;

import java.util.List;

/**
 * Created by lucky on 2017/8/10.
 */
public interface QuestionTypeService {
    /**
     * 根据题型id获取题型信息.
     *
     * @param id 题型id
     * @return 题型信息 question type
     */
    QuestionType getQuestionType(String id);

    /**
     * 根据题库ID获取题型列表.
     *
     * @param itemBankId 题库id
     * @return 题型列表
     */
    List<QuestionType> getListByItemBankId(String itemBankId);

    /**
     * 根据大题id获取题型信息.
     *
     * @param sectionId 大题id
     * @return 题型信息
     */
    QuestionType getQuestionTypeBySectionId(String sectionId);

    /**
     * 根据题库ID获取题型列表(admin).
     *
     * @param itemBankId 题库id
     * @param name       题型名称模糊查询
     * @return 题型列表
     */
    List<QuestionTypeManageDto> getListByItemBankIdAndName(String itemBankId, String name);


    /**
     * 新增题型信息.
     *
     * @param itemBankId 所属题库id
     * @param model      题型传输模型
     * @return the return model
     */
    ReturnModel insert(String itemBankId, QuestionTypeDto model);

    /**
     * 修改题型
     *
     * @param id         the id
     * @param itemBankId the item bank id
     * @param model      the model
     * @return the int
     */
    int update(String id, String itemBankId, QuestionTypeDto model);

    /**
     * 更新题型状态.
     *
     * @param id         题型
     * @param itemBankId 所属题库id
     * @return the int
     */
    int changeStatus(String id, String itemBankId);

    /**
     * 删除题型.
     *
     * @param id         题型ID
     * @param itemBankId 所属题库ID
     * @return the int
     */
    int delete(String id, String itemBankId);

    /**
     * 恢复标记删除的修改题型使用关系状态.
     *
     * @param id         题型ID
     * @param itemBankId 所属题库ID
     * @return the int
     */
    int deleteRollback(String id, String itemBankId);
}
